package com.guoranhao.business.model;

import com.guoranhao.tool.model.BaseModel;
import com.guoranhao.tool.model.CommonConstants;
import com.guoranhao.tool.model.FieldComment;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotNull;
import java.util.Date;

@Data
@Accessors(chain = true)
public class Post extends BaseModel {
    /**
     * 主键id
     */
    @FieldComment(value="主键id")
    @NotNull(message="主键id")
    private Long postId;

    /**
     * 帖子类型0:图文帖,1:视频帖,2图文视频贴
     */
    @FieldComment(value="帖子类型0")
    @NotNull(message="帖子类型0")
    private Integer postTypeId;

    /**
     * 帖子标题
     */
    @FieldComment(value="帖子标题")
    private String postTitle;

    /**
     * 帖子正文JSON内容,包括图片文字
     */
    @FieldComment(value="帖子正文JSON内容")
    @NotNull(message="帖子正文JSON内容")
    private String postContent;

    /**
     * 帖子图片数
     */
    @FieldComment(value="帖子图片数")
    @NotNull(message="帖子图片数")
    private Integer postImgCount;

    /**
     * 帖子文字数
     */
    @FieldComment(value="帖子文字数")
    @NotNull(message="帖子文字数")
    private Integer postTextCount;

    /**
     * 帖子封面图（详情展示，只有一个）
     */
    @FieldComment(value="帖子封面图")
    private String postCoverImg;

    /**
     * 是否推荐（0否1是）
     */
    @FieldComment(value="是否推荐")
    @NotNull(message="是否推荐")
    private Integer recommend;

    /**
     * 发帖人用户id
     */
    @FieldComment(value="发帖人用户id")
    @NotNull(message="发帖人用户id")
    private Long userId;

    /**
     * 帖子来源:0:app,1:admin
     */
    @FieldComment(value="帖子来源")
    @NotNull(message="帖子来源")
    private Integer postSource;

    /**
     * 帖子状态:0:删除,1:正常
     */
    @FieldComment(value="帖子状态")
    @NotNull(message="帖子状态")
    private Integer status;

    /**
     * 帖子审核状态(针对视频帖:0未通过,1:通过，2审核中)
     */
    @FieldComment(value="帖子审核状态")
    @NotNull(message="帖子审核状态")
    private Integer auditStatus;

    /**
     * 帖子投稿状态(针对投稿:0,未投稿,1:已投待审核,2审核通过,3审核未通过，系统超时退回)
     */
    @FieldComment(value="帖子投稿状态")
    @NotNull(message="帖子投稿状态")
    private Integer deliverStatus;

    /**
     * 关联用户id
     */
    @FieldComment(value="关联用户id")
    private Long relationUserId;

    /**
     * 帖子创建时间
     */
    @FieldComment(value="帖子创建时间")
    @NotNull(message="帖子创建时间")
    private Date createTime;

    /**
     * 帖子发布时间(默认即可发布)
     */
    @FieldComment(value="帖子发布时间")
    private Date publishDate;

    /**
     * 帖子最后修改时间
     */
    @FieldComment(value="帖子最后修改时间")
    private Date updateTime;

    /**
     * 帖子最后修改人id
     */
    @FieldComment(value="帖子最后修改人id")
    private Long lastModifyedUserId;

    /**
     * 添加联系人的相关描述
     */
    @FieldComment(value="添加联系人的相关描述")
    private String remarkDesc;

    public void initWithDefaultValue() {
        this.postTypeId = 0;
        this.postTitle = "";
        this.postContent = "";
        this.postImgCount = 0;
        this.postTextCount = 0;
        this.postCoverImg = "";
        this.recommend = 0;
        this.userId = 0L;
        this.postSource = 0;
        this.status = 0;
        this.auditStatus = 0;
        this.deliverStatus = 0;
        this.relationUserId = 0L;
        this.createTime = new Date();
        this.publishDate = CommonConstants.NULL_DATE;
        this.updateTime = new Date();
        this.lastModifyedUserId = 0L;
        this.remarkDesc = "";
    }
}